package com.livraria.managedbeans.controller;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletRequest;

import com.livraria.model.entities.Livro;
import com.livraria.model.repositories.LivroRepository;

@ManagedBean
public class LivroCB {
	private Livro livro = new Livro();
	private List<Livro> livros;

	public void adiciona(ActionEvent event) {
		EntityManager manager = this.getManager();
		LivroRepository repository = new LivroRepository(manager);

		if (this.livro.getId() == null) {
			repository.adicionar(livro);
		} else {
			repository.alterar(livro);
		}
	}
	
	public void remove(ActionEvent event){
		
	}

	private EntityManager getManager() {
		FacesContext fc = FacesContext.getCurrentInstance();
		ExternalContext ec = fc.getExternalContext();
		HttpServletRequest request = (HttpServletRequest) ec.getRequest();
		return (EntityManager) request.getAttribute("EntityManager");
	}

	public List<Livro> getLivros() {
		if(this.livros == null){
			EntityManager manager = this.getManager();
			LivroRepository repository = new LivroRepository(manager);
			repository.getLista();
		}
		
		return livros;
	}

	public Livro getLivro() {
		return livro;
	}

	public void setLivro(Livro livro) {
		this.livro = livro;
	}

}
